package GameElements;

import java.awt.Color;
import java.util.Vector;

import junit.framework.TestCase;

public class TileTest extends TestCase {

	public void testRotate90() {
		Tile t = TileFactory.getInstance().createTile("img/tiles/", "10.png", 1).get(0);
		Tile tToRotate = TileFactory.getInstance().createTile("img/tiles/", "10.png", 1).get(0);
		
		tToRotate.rotate90();
		assertEquals("n-->e", t.getNorth(), tToRotate.getEast());
		assertEquals("e-->s", t.getEast(), tToRotate.getSouth());
		assertEquals("s-->w", t.getSouth(), tToRotate.getWest());
		assertEquals("w-->n", t.getWest(), tToRotate.getNorth());
	}

	public void testSetRole() {
		Pawn p = new BasicPawn("img/pawns/green_basic.png", Color.green);
		Tile t1 = TileFactory.getInstance().createTile("img/tiles/", "1.png", 1).get(0);
		Tile t15 = TileFactory.getInstance().createTile("img/tiles/", "15.png", 1).get(0);
		
		t1.setRole(p, Tile.c);
		assertEquals("le role du pion est incorrect", p.getRole(), Pawn.MOINE);
		t15.setRole(p, Tile.n2);
		assertEquals("le role du pion est incorrect", p.getRole(), Pawn.CHEVALIER);
		t15.setRole(p, Tile.e0);
		assertEquals("le role du pion est incorrect", p.getRole(), Pawn.PAYSAN);
		t15.setRole(p, Tile.e1);
		assertEquals("le role du pion est incorrect", p.getRole(), Pawn.VOLEUR);

	}

	public void testHavePawn() {
		Pawn p = new BasicPawn("img/pawns/green_basic.png", Color.green);
		Tile t4 = TileFactory.getInstance().createTile("img/tiles/", "4.png", 1).get(0);
		Vector<Integer> l = new Vector<Integer>();
		for(int i=0; i<13; i++)
			l.add(i);
		assertFalse("il ne devrait pas avoir de pion au depart", t4.havePawn(l));
		t4.setPawnToAdaptedIndex(p, 1);
		assertTrue("il devrait avoir des pions", t4.havePawn(l));
		
		l.remove(1);
		assertFalse("il ne devrait pas avoir des pions", t4.havePawn(l));

	}

	public void testFindAdaptedIndex() {
		Tile t4 = TileFactory.getInstance().createTile("img/tiles/", "4.png", 1).get(0);
		assertEquals("sa devrait etre l'index adapté", 1, t4.findAdaptedIndex(0));
		assertEquals("sa devrait etre l'index adapté", 1, t4.findAdaptedIndex(1));
		assertEquals("sa devrait etre l'index adapté", 1, t4.findAdaptedIndex(2));
		assertEquals("sa devrait etre l'index adapté", 3, t4.findAdaptedIndex(3));
		assertEquals("sa devrait etre l'index adapté", 4, t4.findAdaptedIndex(4));
		assertEquals("sa devrait etre l'index adapté", 10, t4.findAdaptedIndex(10));
		assertEquals("sa devrait etre l'index adapté", 7, t4.findAdaptedIndex(6));
		assertEquals("sa devrait etre l'index adapté", 7, t4.findAdaptedIndex(9));
	}
}
